#include <iostream>
#include <string>

#include <DiskStream.hpp>

using namespace std;

#ifndef _CLASSMODELINGTEXTSTREAM_
#define _CLASSMODELINGTEXTSTREAM_

namespace Modeling {

class TextStream : public Modeling::DiskStream
{
public:
	virtual ~TextStream();
	TextStream(std::string name, std::string mode);

protected:
	virtual size_t read(int* value);
	virtual size_t read(unsigned int* value);
	virtual size_t read(float* value);
	virtual size_t read(std::string* str);
	virtual size_t read(Vector3ui* vector);
	virtual size_t read(Vector3f* vector);
	virtual size_t read(Vector2f* vector);
	virtual size_t read(Modeling::RGBf* rgb);
	virtual size_t read(Matrix4f* matrix);

	virtual size_t write(int value);
	virtual size_t write(unsigned int value);
	virtual size_t write(float value);
	virtual size_t write(std::string str);
	virtual size_t write(Vector3ui vector);
	virtual size_t write(Vector3f vector);
	virtual size_t write(Vector2f vector);
	virtual size_t write(Modeling::RGBf rgb);
	virtual size_t write(Matrix4f matrix);
	
};

}// namespace Moeling

#endif
